/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.ekaaty.controller;

import br.com.ekaaty.bean.Faculdade;
import br.com.ekaaty.business.FaculdadeBusiness;
import br.com.ekaaty.dao.FaculdadeDao;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
import org.primefaces.context.RequestContext;

/**
 *
 * @author otavio
 */
@ManagedBean
@SessionScoped
public class FaculdadeController extends GenericController<Faculdade> {

    public void selecionado() {
        bean = (Faculdade) data.getRowData();
        System.out.println("selecionado " + bean.getNome());
    }

    /**
     * @param faculdade the faculdade to set
     */
    public void salvar() {
        FaculdadeBusiness faculdadeBusiness = new FaculdadeBusiness();
        if (faculdadeBusiness.adicionar(bean)) {
            bean = new Faculdade();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso", "Faculdade Criada Com sucesso"));
        } else if(faculdadeBusiness.vazio(bean)){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", "Digte o nome"));
        }
        else if(faculdadeBusiness.duplicado(bean)){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Dado cadastrado", "Essa faculdade já existe no banco de dados"));
        }

    }

    public void excluir() {
        FaculdadeDao dao = new FaculdadeDao();

        dao.remover(bean);
    }

    /**
     * Esse atributo tem a fun de gerar um datamodel para ser alimentando
     * em um
     * @return o DataModel alimentado com a lista
     * @throws Exception
     */
    public DataModel getTodos()
            throws Exception {
        FaculdadeDao dao = new FaculdadeDao();
        data = new ListDataModel(dao.listar());
        System.out.println("O valor foi enviado do Datamodel do Faculdade");
        return data;


    }

 

    public void update() {
        RequestContext context = RequestContext.getCurrentInstance();
        boolean fechar = false;
        if (bean.getNome() == null || bean.getNome().length() <= 2) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro na edição", "É necessário o nome da Faculdade"));
        } else {
            fechar = true;
            FaculdadeDao dao = new FaculdadeDao();
            dao.atualizar(bean);
            bean.setNome("");
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso", "Faculdade Alterada com sucesso!"));
        }
        context.addCallbackParam("fechar", fechar);
    

    }

    public List<SelectItem> getCombo() throws Exception {
        FaculdadeDao faculdadeDao = new FaculdadeDao();
        List<Faculdade> ls = faculdadeDao.listar();
        List<SelectItem> combo = new ArrayList<SelectItem>();
        for (Faculdade f : ls) {
            combo.add(new SelectItem(f, f.getNome()));
        }
        return combo;
    }
    

    @Override
    public Faculdade initBean() {
        return new Faculdade();
    }

    @Override
    public void limpar() {
       bean = new Faculdade();
    }
}
